home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / ideas / draw_holder.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  40KB  |  1,323 lines

  1. /*
  2.  * Copyright 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <gl.h>
  18.  
  19. #include "objects.h"
  20.  
  21. float bn[5][3] = {
  22.     {-1.0, 0.0, 0.0},
  23.     {0.0, 1.0, 0.0},
  24.     {1.0, 0.0, 0.0},
  25.     {0.0, -1.0, 0.0},
  26.     {0.0, 0.0, 1.0},
  27. };
  28.  
  29. float bp[4][8][3] = {
  30.     {   
  31.     {-14.000000, -14.000000, 0.000000},
  32.     {-14.000000, -14.000000, 4.000000},
  33.     {-14.000000, 14.000000, 0.000000},
  34.     {-14.000000, 14.000000, 4.000000},
  35.     {14.000000, 14.000000, 0.000000},
  36.     {14.000000, 14.000000, 4.000000},
  37.     {14.000000, -14.000000, 0.000000},
  38.     {14.000000, -14.000000, 4.000000},
  39.     },
  40.     {
  41.     {-12.000000, -12.000000, 4.000000},
  42.     {-12.000000, -12.000000, 8.000000},
  43.     {-12.000000, 12.000000, 4.000000},
  44.     {-12.000000, 12.000000, 8.000000},
  45.     {12.000000, 12.000000, 4.000000},
  46.     {12.000000, 12.000000, 8.000000},
  47.     {12.000000, -12.000000, 4.000000},
  48.     {12.000000, -12.000000, 8.000000},
  49.     },
  50.     {
  51.     {-10.000000, -10.000000, 8.000000},
  52.     {-10.000000, -10.000000, 12.000000},
  53.     {-10.000000, 10.000000, 8.000000},
  54.     {-10.000000, 10.000000, 12.000000},
  55.     {10.000000, 10.000000, 8.000000},
  56.     {10.000000, 10.000000, 12.000000},
  57.     {10.000000, -10.000000, 8.000000},
  58.     {10.000000, -10.000000, 12.000000},
  59.     },
  60.     {
  61.     {-8.000000, -8.000000, 12.000000},
  62.     {-8.000000, -8.000000, 8.000000},
  63.     {-8.000000, 8.000000, 12.000000},
  64.     {-8.000000, 8.000000, 8.000000},
  65.     {8.000000, 8.000000, 12.000000},
  66.     {8.000000, 8.000000, 8.000000},
  67.     {8.000000, -8.000000, 12.000000},
  68.     {8.000000, -8.000000, 8.000000},
  69.     },
  70. };
  71.  
  72. float tp[12][21][3] = {
  73.      {
  74.     {10.000000, 0.000000, 1.000000},
  75.     {9.510565, -3.090170, 1.000000},
  76.     {8.090170, -5.877852, 1.000000},
  77.     {5.877852, -8.090170, 1.000000},
  78.     {3.090170, -9.510565, 1.000000},
  79.     {0.000000, -10.000000, 1.000000},
  80.     {-3.090170, -9.510565, 1.000000},
  81.     {-5.877852, -8.090170, 1.000000},
  82.     {-8.090170, -5.877852, 1.000000},
  83.     {-9.510565, -3.090170, 1.000000},
  84.     {-10.000000, 0.000000, 1.000000},
  85.     {-9.510565, 3.090170, 1.000000},
  86.     {-8.090170, 5.877852, 1.000000},
  87.     {-5.877852, 8.090170, 1.000000},
  88.     {-3.090170, 9.510565, 1.000000},
  89.     {0.000000, 10.000000, 1.000000},
  90.     {3.090170, 9.510565, 1.000000},
  91.     {5.877852, 8.090170, 1.000000},
  92.     {8.090170, 5.877852, 1.000000},
  93.     {9.510565, 3.090170, 1.000000},
  94.     {10.000000, 0.000000, 1.000000},
  95.     },
  96.  
  97.      {
  98.     {10.540641, 0.000000, 0.841254},
  99.     {10.024745, -3.257237, 0.841254},
  100.     {8.527557, -6.195633, 0.841254},
  101.     {6.195633, -8.527557, 0.841254},
  102.     {3.257237, -10.024745, 0.841254},
  103.     {0.000000, -10.540641, 0.841254},
  104.     {-3.257237, -10.024745, 0.841254},
  105.     {-6.195633, -8.527557, 0.841254},
  106.     {-8.527557, -6.195633, 0.841254},
  107.     {-10.024745, -3.257237, 0.841254},
  108.     {-10.540641, 0.000000, 0.841254},
  109.     {-10.024745, 3.257237, 0.841254},
  110.     {-8.527557, 6.195633, 0.841254},
  111.     {-6.195633, 8.527557, 0.841254},
  112.     {-3.257237, 10.024745, 0.841254},
  113.     {0.000000, 10.540641, 0.841254},
  114.     {3.257237, 10.024745, 0.841254},
  115.     {6.195633, 8.527557, 0.841254},
  116.     {8.527557, 6.195633, 0.841254},
  117.     {10.024745, 3.257237, 0.841254},
  118.     {10.540641, 0.000000, 0.841254},
  119.     },
  120.  
  121.      {
  122.     {10.909632, 0.000000, 0.415415},
  123.     {10.375676, -3.371262, 0.415415},
  124.     {8.826077, -6.412521, 0.415415},
  125.     {6.412521, -8.826077, 0.415415},
  126.     {3.371262, -10.375676, 0.415415},
  127.     {0.000000, -10.909632, 0.415415},
  128.     {-3.371262, -10.375676, 0.415415},
  129.     {-6.412521, -8.826077, 0.415415},
  130.     {-8.826077, -6.412521, 0.415415},
  131.     {-10.375676, -3.371262, 0.415415},
  132.     {-10.909632, 0.000000, 0.415415},
  133.     {-10.375676, 3.371262, 0.415415},
  134.     {-8.826077, 6.412521, 0.415415},
  135.     {-6.412521, 8.826077, 0.415415},
  136.     {-3.371262, 10.375676, 0.415415},
  137.     {0.000000, 10.909632, 0.415415},
  138.     {3.371262, 10.375676, 0.415415},
  139.     {6.412521, 8.826077, 0.415415},
  140.     {8.826077, 6.412521, 0.415415},
  141.     {10.375676, 3.371262, 0.415415},
  142.     {10.909632, 0.000000, 0.415415},
  143.     },
  144.  
  145.      {
  146.     {10.989821, 0.000000, -0.142315},
  147.     {10.451941, -3.396042, -0.142315},
  148.     {8.890952, -6.459655, -0.142315},
  149.     {6.459655, -8.890952, -0.142315},
  150.     {3.396042, -10.451941, -0.142315},
  151.     {0.000000, -10.989821, -0.142315},
  152.     {-3.396042, -10.451941, -0.142315},
  153.     {-6.459655, -8.890952, -0.142315},
  154.     {-8.890952, -6.459655, -0.142315},
  155.     {-10.451941, -3.396042, -0.142315},
  156.     {-10.989821, 0.000000, -0.142315},
  157.     {-10.451941, 3.396042, -0.142315},
  158.     {-8.890952, 6.459655, -0.142315},
  159.     {-6.459655, 8.890952, -0.142315},
  160.     {-3.396042, 10.451941, -0.142315},
  161.     {0.000000, 10.989821, -0.142315},
  162.     {3.396042, 10.451941, -0.142315},
  163.     {6.459655, 8.890952, -0.142315},
  164.     {8.890952, 6.459655, -0.142315},
  165.     {10.451941, 3.396042, -0.142315},
  166.     {10.989821, 0.000000, -0.142315},
  167.     },
  168.  
  169.      {
  170.     {10.755750, 0.000000, -0.654861},
  171.     {10.229325, -3.323709, -0.654861},
  172.     {8.701584, -6.322071, -0.654861},
  173.     {6.322071, -8.701584, -0.654861},
  174.     {3.323709, -10.229325, -0.654861},
  175.     {0.000000, -10.755750, -0.654861},
  176.     {-3.323709, -10.229325, -0.654861},
  177.     {-6.322071, -8.701584, -0.654861},
  178.     {-8.701584, -6.322071, -0.654861},
  179.     {-10.229325, -3.323709, -0.654861},
  180.     {-10.755750, 0.000000, -0.654861},
  181.     {-10.229325, 3.323709, -0.654861},
  182.     {-8.701584, 6.322071, -0.654861},
  183.     {-6.322071, 8.701584, -0.654861},
  184.     {-3.323709, 10.229325, -0.654861},
  185.     {0.000000, 10.755750, -0.654861},
  186.     {3.323709, 10.229325, -0.654861},
  187.     {6.322071, 8.701584, -0.654861},
  188.     {8.701584, 6.322071, -0.654861},
  189.     {10.229325, 3.323709, -0.654861},
  190.     {10.755750, 0.000000, -0.654861},
  191.     },
  192.  
  193.      {
  194.     {10.281733, 0.000000, -0.959493},
  195.     {9.778509, -3.177230, -0.959493},
  196.     {8.318096, -6.043451, -0.959493},
  197.     {6.043451, -8.318096, -0.959493},
  198.     {3.177230, -9.778509, -0.959493},
  199.     {0.000000, -10.281733, -0.959493},
  200.     {-3.177230, -9.778509, -0.959493},
  201.     {-6.043451, -8.318096, -0.959493},
  202.     {-8.318096, -6.043451, -0.959493},
  203.     {-9.778509, -3.177230, -0.959493},
  204.     {-10.281733, 0.000000, -0.959493},
  205.     {-9.778509, 3.177230, -0.959493},
  206.     {-8.318096, 6.043451, -0.959493},
  207.     {-6.043451, 8.318096, -0.959493},
  208.     {-3.177230, 9.778509, -0.959493},
  209.     {0.000000, 10.281733, -0.959493},
  210.     {3.177230, 9.778509, -0.959493},
  211.     {6.043451, 8.318096, -0.959493},
  212.     {8.318096, 6.043451, -0.959493},
  213.     {9.778509, 3.177230, -0.959493},
  214.     {10.281733, 0.000000, -0.959493},
  215.     },
  216.  
  217.      {
  218.     {9.718267, 0.000000, -0.959493},
  219.     {9.242621, -3.003110, -0.959493},
  220.     {7.862244, -5.712255, -0.959493},
  221.     {5.712255, -7.862244, -0.959493},
  222.     {3.003110, -9.242621, -0.959493},
  223.     {0.000000, -9.718267, -0.959493},
  224.     {-3.003110, -9.242621, -0.959493},
  225.     {-5.712255, -7.862244, -0.959493},
  226.     {-7.862244, -5.712255, -0.959493},
  227.     {-9.242621, -3.003110, -0.959493},
  228.     {-9.718267, 0.000000, -0.959493},
  229.     {-9.242621, 3.003110, -0.959493},
  230.     {-7.862244, 5.712255, -0.959493},
  231.     {-5.712255, 7.862244, -0.959493},
  232.     {-3.003110, 9.242621, -0.959493},
  233.     {0.000000, 9.718267, -0.959493},
  234.     {3.003110, 9.242621, -0.959493},
  235.     {5.712255, 7.862244, -0.959493},
  236.     {7.862244, 5.712255, -0.959493},
  237.     {9.242621, 3.003110, -0.959493},
  238.     {9.718267, 0.000000, -0.959493},
  239.     },
  240.  
  241.      {
  242.     {9.244250, 0.000000, -0.654861},
  243.     {8.791805, -2.856631, -0.654861},
  244.     {7.478756, -5.433634, -0.654861},
  245.     {5.433634, -7.478756, -0.654861},
  246.     {2.856631, -8.791805, -0.654861},
  247.     {0.000000, -9.244250, -0.654861},
  248.     {-2.856631, -8.791805, -0.654861},
  249.     {-5.433634, -7.478756, -0.654861},
  250.     {-7.478756, -5.433634, -0.654861},
  251.     {-8.791805, -2.856631, -0.654861},
  252.     {-9.244250, 0.000000, -0.654861},
  253.     {-8.791805, 2.856631, -0.654861},
  254.     {-7.478756, 5.433634, -0.654861},
  255.     {-5.433634, 7.478756, -0.654861},
  256.     {-2.856631, 8.791805, -0.654861},
  257.     {0.000000, 9.244250, -0.654861},
  258.     {2.856631, 8.791805, -0.654861},
  259.     {5.433634, 7.478756, -0.654861},
  260.     {7.478756, 5.433634, -0.654861},
  261.     {8.791805, 2.856631, -0.654861},
  262.     {9.244250, 0.000000, -0.654861},
  263.     },
  264.  
  265.      {
  266.     {9.010179, 0.000000, -0.142315},
  267.     {8.569189, -2.784298, -0.142315},
  268.     {7.289388, -5.296050, -0.142315},
  269.     {5.296050, -7.289388, -0.142315},
  270.     {2.784298, -8.569189, -0.142315},
  271.     {0.000000, -9.010179, -0.142315},
  272.     {-2.784298, -8.569189, -0.142315},
  273.     {-5.296050, -7.289388, -0.142315},
  274.     {-7.289388, -5.296050, -0.142315},
  275.     {-8.569189, -2.784298, -0.142315},
  276.     {-9.010179, 0.000000, -0.142315},
  277.     {-8.569189, 2.784298, -0.142315},
  278.     {-7.289388, 5.296050, -0.142315},
  279.     {-5.296050, 7.289388, -0.142315},
  280.     {-2.784298, 8.569189, -0.142315},
  281.     {0.000000, 9.010179, -0.142315},
  282.     {2.784298, 8.569189, -0.142315},
  283.     {5.296050, 7.289388, -0.142315},
  284.     {7.289388, 5.296050, -0.142315},
  285.     {8.569189, 2.784298, -0.142315},
  286.     {9.010179, 0.000000, -0.142315},
  287.     },
  288.  
  289.      {
  290.     {9.090367, 0.000000, 0.415414},
  291.     {8.645453, -2.809078, 0.415414},
  292.     {7.354262, -5.343184, 0.415414},
  293.     {5.343184, -7.354262, 0.415414},
  294.     {2.809078, -8.645453, 0.415414},
  295.     {0.000000, -9.090367, 0.415414},
  296.     {-2.809078, -8.645453, 0.415414},
  297.     {-5.343184, -7.354262, 0.415414},
  298.     {-7.354262, -5.343184, 0.415414},
  299.     {-8.645453, -2.809078, 0.415414},
  300.     {-9.090367, 0.000000, 0.415414},
  301.     {-8.645453, 2.809078, 0.415414},
  302.     {-7.354262, 5.343184, 0.415414},
  303.     {-5.343184, 7.354262, 0.415414},
  304.     {-2.809078, 8.645453, 0.415414},
  305.     {0.000000, 9.090367, 0.415414},
  306.     {2.809078, 8.645453, 0.415414},
  307.     {5.343184, 7.354262, 0.415414},
  308.     {7.354262, 5.343184, 0.415414},
  309.     {8.645453, 2.809078, 0.415414},
  310.     {9.090367, 0.000000, 0.415414},
  311.     },
  312.  
  313.      {
  314.     {9.459358, 0.000000, 0.841253},
  315.     {8.996385, -2.923103, 0.841253},
  316.     {7.652781, -5.560071, 0.841253},
  317.     {5.560071, -7.652781, 0.841253},
  318.     {2.923103, -8.996385, 0.841253},
  319.     {0.000000, -9.459358, 0.841253},
  320.     {-2.923103, -8.996385, 0.841253},
  321.     {-5.560071, -7.652781, 0.841253},
  322.     {-7.652781, -5.560071, 0.841253},
  323.     {-8.996385, -2.923103, 0.841253},
  324.     {-9.459358, 0.000000, 0.841253},
  325.     {-8.996385, 2.923103, 0.841253},
  326.     {-7.652781, 5.560071, 0.841253},
  327.     {-5.560071, 7.652781, 0.841253},
  328.     {-2.923103, 8.996385, 0.841253},
  329.     {0.000000, 9.459358, 0.841253},
  330.     {2.923103, 8.996385, 0.841253},
  331.     {5.560071, 7.652781, 0.841253},
  332.     {7.652781, 5.560071, 0.841253},
  333.     {8.996385, 2.923103, 0.841253},
  334.     {9.459358, 0.000000, 0.841253},
  335.     },
  336.  
  337.      {
  338.     {9.999999, 0.000000, 1.000000},
  339.     {9.510564, -3.090170, 1.000000},
  340.     {8.090169, -5.877852, 1.000000},
  341.     {5.877852, -8.090169, 1.000000},
  342.     {3.090170, -9.510564, 1.000000},
  343.     {0.000000, -9.999999, 1.000000},
  344.     {-3.090170, -9.510564, 1.000000},
  345.     {-5.877852, -8.090169, 1.000000},
  346.     {-8.090169, -5.877852, 1.000000},
  347.     {-9.510564, -3.090170, 1.000000},
  348.     {-9.999999, 0.000000, 1.000000},
  349.     {-9.510564, 3.090170, 1.000000},
  350.     {-8.090169, 5.877852, 1.000000},
  351.     {-5.877852, 8.090169, 1.000000},
  352.     {-3.090170, 9.510564, 1.000000},
  353.     {0.000000, 9.999999, 1.000000},
  354.     {3.090170, 9.510564, 1.000000},
  355.     {5.877852, 8.090169, 1.000000},
  356.     {8.090169, 5.877852, 1.000000},
  357.     {9.510564, 3.090170, 1.000000},
  358.     {9.999999, 0.000000, 1.000000},
  359.     },
  360.  
  361. };
  362.  
  363. float tn[12][21][3] = {
  364.     {
  365.     {0.000000, 0.000000, 1.000000},
  366.     {0.000000, 0.000000, 1.000000},
  367.     {0.000000, 0.000000, 1.000000},
  368.     {0.000000, 0.000000, 1.000000},
  369.     {0.000000, 0.000000, 1.000000},
  370.     {0.000000, 0.000000, 1.000000},
  371.     {0.000000, 0.000000, 1.000000},
  372.     {0.000000, 0.000000, 1.000000},
  373.     {0.000000, 0.000000, 1.000000},
  374.     {0.000000, 0.000000, 1.000000},
  375.     {0.000000, 0.000000, 1.000000},
  376.     {0.000000, 0.000000, 1.000000},
  377.     {0.000000, 0.000000, 1.000000},
  378.     {0.000000, 0.000000, 1.000000},
  379.     {0.000000, 0.000000, 1.000000},
  380.     {0.000000, 0.000000, 1.000000},
  381.     {0.000000, 0.000000, 1.000000},
  382.     {0.000000, 0.000000, 1.000000},
  383.     {0.000000, 0.000000, 1.000000},
  384.     {0.000000, 0.000000, 1.000000},
  385.     {0.000000, 0.000000, 1.000000},
  386.     },
  387.  
  388.     {
  389.     {0.540641, 0.000000, 0.841254},
  390.     {0.514180, -0.167067, 0.841254},
  391.     {0.437388, -0.317781, 0.841254},
  392.     {0.317781, -0.437388, 0.841254},
  393.     {0.167067, -0.514180, 0.841254},
  394.     {0.000000, -0.540641, 0.841254},
  395.     {-0.167067, -0.514180, 0.841254},
  396.     {-0.317781, -0.437388, 0.841254},
  397.     {-0.437388, -0.317781, 0.841254},
  398.     {-0.514180, -0.167067, 0.841254},
  399.     {-0.540641, 0.000000, 0.841254},
  400.     {-0.514180, 0.167067, 0.841254},
  401.     {-0.437388, 0.317781, 0.841254},
  402.     {-0.317781, 0.437388, 0.841254},
  403.     {-0.167067, 0.514180, 0.841254},
  404.     {0.000000, 0.540641, 0.841254},
  405.     {0.167067, 0.514180, 0.841254},
  406.     {0.317781, 0.437388, 0.841254},
  407.     {0.437388, 0.317781, 0.841254},
  408.     {0.514180, 0.167067, 0.841254},
  409.     {0.540641, 0.000000, 0.841254},
  410.     },
  411.  
  412.     {
  413.     {0.909632, 0.000000, 0.415415},
  414.     {0.865111, -0.281092, 0.415415},
  415.     {0.735908, -0.534668, 0.415415},
  416.     {0.534668, -0.735908, 0.415415},
  417.     {0.281092, -0.865111, 0.415415},
  418.     {0.000000, -0.909632, 0.415415},
  419.     {-0.281092, -0.865111, 0.415415},
  420.     {-0.534668, -0.735908, 0.415415},
  421.     {-0.735908, -0.534668, 0.415415},
  422.     {-0.865111, -0.281092, 0.415415},
  423.     {-0.909632, 0.000000, 0.415415},
  424.     {-0.865111, 0.281092, 0.415415},
  425.     {-0.735908, 0.534668, 0.415415},
  426.     {-0.534668, 0.735908, 0.415415},
  427.     {-0.281092, 0.865111, 0.415415},
  428.     {0.000000, 0.909632, 0.415415},
  429.     {0.281092, 0.865111, 0.415415},
  430.     {0.534668, 0.735908, 0.415415},
  431.     {0.735908, 0.534668, 0.415415},
  432.     {0.865111, 0.281092, 0.415415},
  433.     {0.909632, 0.000000, 0.415415},
  434.     },
  435.  
  436.     {
  437.     {0.989821, 0.000000, -0.142315},
  438.     {0.941376, -0.305872, -0.142315},
  439.     {0.800782, -0.581802, -0.142315},
  440.     {0.581802, -0.800782, -0.142315},
  441.     {0.305872, -0.941376, -0.142315},
  442.     {0.000000, -0.989821, -0.142315},
  443.     {-0.305872, -0.941376, -0.142315},
  444.     {-0.581802, -0.800782, -0.142315},
  445.     {-0.800782, -0.581802, -0.142315},
  446.     {-0.941376, -0.305872, -0.142315},
  447.     {-0.989821, 0.000000, -0.142315},
  448.     {-0.941376, 0.305872, -0.142315},
  449.     {-0.800782, 0.581802, -0.142315},
  450.     {-0.581802, 0.800782, -0.142315},
  451.     {-0.305872, 0.941376, -0.142315},
  452.     {0.000000, 0.989821, -0.142315},
  453.     {0.305872, 0.941376, -0.142315},
  454.     {0.581802, 0.800782, -0.142315},
  455.     {0.800782, 0.581802, -0.142315},
  456.     {0.941376, 0.305872, -0.142315},
  457.     {0.989821, 0.000000, -0.142315},
  458.     },
  459.  
  460.     {
  461.     {0.755750, 0.000000, -0.654861},
  462.     {0.718761, -0.233539, -0.654861},
  463.     {0.611414, -0.444218, -0.654861},
  464.     {0.444218, -0.611414, -0.654861},
  465.     {0.233539, -0.718761, -0.654861},
  466.     {0.000000, -0.755750, -0.654861},
  467.     {-0.233539, -0.718761, -0.654861},
  468.     {-0.444218, -0.611414, -0.654861},
  469.     {-0.611414, -0.444218, -0.654861},
  470.     {-0.718761, -0.233539, -0.654861},
  471.     {-0.755750, 0.000000, -0.654861},
  472.     {-0.718761, 0.233539, -0.654861},
  473.     {-0.611414, 0.444218, -0.654861},
  474.     {-0.444218, 0.611414, -0.654861},
  475.     {-0.233539, 0.718761, -0.654861},
  476.     {0.000000, 0.755750, -0.654861},
  477.     {0.233539, 0.718761, -0.654861},
  478.     {0.444218, 0.611414, -0.654861},
  479.     {0.611414, 0.444218, -0.654861},
  480.     {0.718761, 0.233539, -0.654861},
  481.     {0.755750, 0.000000, -0.654861},
  482.     },
  483.  
  484.     {
  485.     {0.281733, 0.000000, -0.959493},
  486.     {0.267944, -0.087060, -0.959493},
  487.     {0.227927, -0.165598, -0.959493},
  488.     {0.165598, -0.227927, -0.959493},
  489.     {0.087060, -0.267944, -0.959493},
  490.     {0.000000, -0.281733, -0.959493},
  491.     {-0.087060, -0.267944, -0.959493},
  492.     {-0.165598, -0.227927, -0.959493},
  493.     {-0.227927, -0.165598, -0.959493},
  494.     {-0.267944, -0.087060, -0.959493},
  495.     {-0.281733, 0.000000, -0.959493},
  496.     {-0.267944, 0.087060, -0.959493},
  497.     {-0.227927, 0.165598, -0.959493},
  498.     {-0.165598, 0.227927, -0.959493},
  499.     {-0.087060, 0.267944, -0.959493},
  500.     {0.000000, 0.281733, -0.959493},
  501.     {0.087060, 0.267944, -0.959493},
  502.     {0.165598, 0.227927, -0.959493},
  503.     {0.227927, 0.165598, -0.959493},
  504.     {0.267944, 0.087060, -0.959493},
  505.     {0.281733, 0.000000, -0.959493},
  506.     },
  507.  
  508.     {
  509.     {-0.281732, 0.000000, -0.959493},
  510.     {-0.267943, 0.087060, -0.959493},
  511.     {-0.227926, 0.165598, -0.959493},
  512.     {-0.165598, 0.227926, -0.959493},
  513.     {-0.087060, 0.267943, -0.959493},
  514.     {0.000000, 0.281732, -0.959493},
  515.     {0.087060, 0.267943, -0.959493},
  516.     {0.165598, 0.227926, -0.959493},
  517.     {0.227926, 0.165598, -0.959493},
  518.     {0.267943, 0.087060, -0.959493},
  519.     {0.281732, 0.000000, -0.959493},
  520.     {0.267943, -0.087060, -0.959493},
  521.     {0.227926, -0.165598, -0.959493},
  522.     {0.165598, -0.227926, -0.959493},
  523.     {0.087060, -0.267943, -0.959493},
  524.     {0.000000, -0.281732, -0.959493},
  525.     {-0.087060, -0.267943, -0.959493},
  526.     {-0.165598, -0.227926, -0.959493},
  527.     {-0.227926, -0.165598, -0.959493},
  528.     {-0.267943, -0.087060, -0.959493},
  529.     {-0.281732, 0.000000, -0.959493},
  530.     },
  531.  
  532.     {
  533.     {-0.755749, 0.000000, -0.654861},
  534.     {-0.718760, 0.233539, -0.654861},
  535.     {-0.611414, 0.444218, -0.654861},
  536.     {-0.444218, 0.611414, -0.654861},
  537.     {-0.233539, 0.718760, -0.654861},
  538.     {0.000000, 0.755749, -0.654861},
  539.     {0.233539, 0.718760, -0.654861},
  540.     {0.444218, 0.611414, -0.654861},
  541.     {0.611414, 0.444218, -0.654861},
  542.     {0.718760, 0.233539, -0.654861},
  543.     {0.755749, 0.000000, -0.654861},
  544.     {0.718760, -0.233539, -0.654861},
  545.     {0.611414, -0.444218, -0.654861},
  546.     {0.444218, -0.611414, -0.654861},
  547.     {0.233539, -0.718760, -0.654861},
  548.     {0.000000, -0.755749, -0.654861},
  549.     {-0.233539, -0.718760, -0.654861},
  550.     {-0.444218, -0.611414, -0.654861},
  551.     {-0.611414, -0.444218, -0.654861},
  552.     {-0.718760, -0.233539, -0.654861},
  553.     {-0.755749, 0.000000, -0.654861},
  554.     },
  555.  
  556.     {
  557.     {-0.989821, 0.000000, -0.142315},
  558.     {-0.941376, 0.305872, -0.142315},
  559.     {-0.800782, 0.581802, -0.142315},
  560.     {-0.581802, 0.800782, -0.142315},
  561.     {-0.305872, 0.941376, -0.142315},
  562.     {0.000000, 0.989821, -0.142315},
  563.     {0.305872, 0.941376, -0.142315},
  564.     {0.581802, 0.800782, -0.142315},
  565.     {0.800782, 0.581802, -0.142315},
  566.     {0.941376, 0.305872, -0.142315},
  567.     {0.989821, 0.000000, -0.142315},
  568.     {0.941376, -0.305872, -0.142315},
  569.     {0.800782, -0.581802, -0.142315},
  570.     {0.581802, -0.800782, -0.142315},
  571.     {0.305872, -0.941376, -0.142315},
  572.     {0.000000, -0.989821, -0.142315},
  573.     {-0.305872, -0.941376, -0.142315},
  574.     {-0.581802, -0.800782, -0.142315},
  575.     {-0.800782, -0.581802, -0.142315},
  576.     {-0.941376, -0.305872, -0.142315},
  577.     {-0.989821, 0.000000, -0.142315},
  578.     },
  579.  
  580.     {
  581.     {-0.909632, 0.000000, 0.415414},
  582.     {-0.865112, 0.281092, 0.415414},
  583.     {-0.735908, 0.534668, 0.415414},
  584.     {-0.534668, 0.735908, 0.415414},
  585.     {-0.281092, 0.865112, 0.415414},
  586.     {0.000000, 0.909632, 0.415414},
  587.     {0.281092, 0.865112, 0.415414},
  588.     {0.534668, 0.735908, 0.415414},
  589.     {0.735908, 0.534668, 0.415414},
  590.     {0.865112, 0.281092, 0.415414},
  591.     {0.909632, 0.000000, 0.415414},
  592.     {0.865112, -0.281092, 0.415414},
  593.     {0.735908, -0.534668, 0.415414},
  594.     {0.534668, -0.735908, 0.415414},
  595.     {0.281092, -0.865112, 0.415414},
  596.     {0.000000, -0.909632, 0.415414},
  597.     {-0.281092, -0.865112, 0.415414},
  598.     {-0.534668, -0.735908, 0.415414},
  599.     {-0.735908, -0.534668, 0.415414},
  600.     {-0.865112, -0.281092, 0.415414},
  601.     {-0.909632, 0.000000, 0.415414},
  602.     },
  603.  
  604.     {
  605.     {-0.540642, 0.000000, 0.841253},
  606.     {-0.514181, 0.167067, 0.841253},
  607.     {-0.437388, 0.317781, 0.841253},
  608.     {-0.317781, 0.437388, 0.841253},
  609.     {-0.167067, 0.514181, 0.841253},
  610.     {0.000000, 0.540642, 0.841253},
  611.     {0.167067, 0.514181, 0.841253},
  612.     {0.317781, 0.437388, 0.841253},
  613.     {0.437388, 0.317781, 0.841253},
  614.     {0.514181, 0.167067, 0.841253},
  615.     {0.540642, 0.000000, 0.841253},
  616.     {0.514181, -0.167067, 0.841253},
  617.     {0.437388, -0.317781, 0.841253},
  618.     {0.317781, -0.437388, 0.841253},
  619.     {0.167067, -0.514181, 0.841253},
  620.     {0.000000, -0.540642, 0.841253},
  621.     {-0.167067, -0.514181, 0.841253},
  622.     {-0.317781, -0.437388, 0.841253},
  623.     {-0.437388, -0.317781, 0.841253},
  624.     {-0.514181, -0.167067, 0.841253},
  625.     {-0.540642, 0.000000, 0.841253},
  626.     },
  627.  
  628.     {
  629.     {-0.000001, 0.000000, 1.000000},
  630.     {-0.000001, 0.000000, 1.000000},
  631.     {-0.000001, 0.000001, 1.000000},
  632.     {-0.000001, 0.000001, 1.000000},
  633.     {0.000000, 0.000001, 1.000000},
  634.     {0.000000, 0.000001, 1.000000},
  635.     {0.000000, 0.000001, 1.000000},
  636.     {0.000001, 0.000001, 1.000000},
  637.     {0.000001, 0.000001, 1.000000},
  638.     {0.000001, 0.000000, 1.000000},
  639.     {0.000001, 0.000000, 1.000000},
  640.     {0.000001, 0.000000, 1.000000},
  641.     {0.000001, -0.000001, 1.000000},
  642.     {0.000001, -0.000001, 1.000000},
  643.     {0.000000, -0.000001, 1.000000},
  644.     {0.000000, -0.000001, 1.000000},
  645.     {0.000000, -0.000001, 1.000000},
  646.     {-0.000001, -0.000001, 1.000000},
  647.     {-0.000001, -0.000001, 1.000000},
  648.     {-0.000001, 0.000000, 1.000000},
  649.     {-0.000001, 0.000000, 1.000000},
  650.     },
  651.  
  652. };
  653.  
  654. draw_base() {
  655.  
  656.     lmbind(MATERIAL, MAT_HOLDER_BASE);
  657.  
  658.     bgnpolygon();
  659.         n3f(bn[0]);
  660.         v3f(bp[0][0]);
  661.         v3f(bp[0][1]);
  662.         v3f(bp[0][3]);
  663.         v3f(bp[0][2]);
  664.     endpolygon();
  665.     bgnpolygon();
  666.         n3f(bn[1]);
  667.         v3f(bp[0][2]);
  668.         v3f(bp[0][3]);
  669.         v3f(bp[0][5]);
  670.         v3f(bp[0][4]);
  671.     endpolygon();
  672.     bgnpolygon();
  673.         n3f(bn[2]);
  674.         v3f(bp[0][4]);
  675.         v3f(bp[0][5]);
  676.         v3f(bp[0][7]);
  677.         v3f(bp[0][6]);
  678.     endpolygon();
  679.     bgnpolygon();
  680.         n3f(bn[3]);
  681.         v3f(bp[0][6]);
  682.         v3f(bp[0][7]);
  683.         v3f(bp[0][1]);
  684.         v3f(bp[0][0]);
  685.     endpolygon();
  686.     bgntmesh();
  687.         n3f(bn[4]);
  688.         v3f(bp[0][1]);
  689.         v3f(bp[1][0]);
  690.         v3f(bp[0][3]);
  691.         v3f(bp[1][2]);
  692.         v3f(bp[0][5]);
  693.         v3f(bp[1][4]);
  694.         v3f(bp[0][7]);
  695.         v3f(bp[1][6]);
  696.         v3f(bp[0][1]);
  697.         v3f(bp[1][0]);
  698.     endtmesh();
  699.     bgnpolygon();
  700.         n3f(bn[0]);
  701.         v3f(bp[1][0]);
  702.         v3f(bp[1][1]);
  703.         v3f(bp[1][3]);
  704.         v3f(bp[1][2]);
  705.     endpolygon();
  706.     bgnpolygon();
  707.         n3f(bn[1]);
  708.         v3f(bp[1][2]);
  709.         v3f(bp[1][3]);
  710.         v3f(bp[1][5]);
  711.         v3f(bp[1][4]);
  712.     endpolygon();
  713.     bgnpolygon();
  714.         n3f(bn[2]);
  715.         v3f(bp[1][4]);
  716.         v3f(bp[1][5]);
  717.         v3f(bp[1][7]);
  718.         v3f(bp[1][6]);
  719.     endpolygon();
  720.     bgnpolygon();
  721.         n3f(bn[3]);
  722.         v3f(bp[1][6]);
  723.         v3f(bp[1][7]);
  724.         v3f(bp[1][1]);
  725.         v3f(bp[1][0]);
  726.     endpolygon();
  727.     bgntmesh();
  728.         n3f(bn[4]);
  729.         v3f(bp[1][1]);
  730.         v3f(bp[2][0]);
  731.         v3f(bp[1][3]);
  732.         v3f(bp[2][2]);
  733.         v3f(bp[1][5]);
  734.         v3f(bp[2][4]);
  735.         v3f(bp[1][7]);
  736.         v3f(bp[2][6]);
  737.         v3f(bp[1][1]);
  738.         v3f(bp[2][0]);
  739.     endtmesh();
  740.     bgnpolygon();
  741.         n3f(bn[0]);
  742.         v3f(bp[2][0]);
  743.         v3f(bp[2][1]);
  744.         v3f(bp[2][3]);
  745.         v3f(bp[2][2]);
  746.     endpolygon();
  747.     bgnpolygon();
  748.         n3f(bn[1]);
  749.         v3f(bp[2][2]);
  750.         v3f(bp[2][3]);
  751.         v3f(bp[2][5]);
  752.         v3f(bp[2][4]);
  753.     endpolygon();
  754.     bgnpolygon();
  755.         n3f(bn[2]);
  756.         v3f(bp[2][4]);
  757.         v3f(bp[2][5]);
  758.         v3f(bp[2][7]);
  759.         v3f(bp[2][6]);
  760.     endpolygon();
  761.     bgnpolygon();
  762.         n3f(bn[3]);
  763.         v3f(bp[2][6]);
  764.         v3f(bp[2][7]);
  765.         v3f(bp[2][1]);
  766.         v3f(bp[2][0]);
  767.     endpolygon();
  768.     bgntmesh();
  769.         n3f(bn[4]);
  770.         v3f(bp[2][1]);
  771.         v3f(bp[3][0]);
  772.         v3f(bp[2][3]);
  773.         v3f(bp[3][2]);
  774.         v3f(bp[2][5]);
  775.         v3f(bp[3][4]);
  776.         v3f(bp[2][7]);
  777.         v3f(bp[3][6]);
  778.         v3f(bp[2][1]);
  779.         v3f(bp[3][0]);
  780.     endtmesh();
  781.     bgnpolygon();
  782.         n3f(bn[2]);
  783.         v3f(bp[3][0]);
  784.         v3f(bp[3][1]);
  785.         v3f(bp[3][3]);
  786.         v3f(bp[3][2]);
  787.     endpolygon();
  788.     bgnpolygon();
  789.         n3f(bn[3]);
  790.         v3f(bp[3][2]);
  791.         v3f(bp[3][3]);
  792.         v3f(bp[3][5]);
  793.         v3f(bp[3][4]);
  794.     endpolygon();
  795.     bgnpolygon();
  796.         n3f(bn[0]);
  797.         v3f(bp[3][4]);
  798.         v3f(bp[3][5]);
  799.         v3f(bp[3][7]);
  800.         v3f(bp[3][6]);
  801.     endpolygon();
  802.     bgnpolygon();
  803.         n3f(bn[1]);
  804.         v3f(bp[3][6]);
  805.         v3f(bp[3][7]);
  806.         v3f(bp[3][1]);
  807.         v3f(bp[3][0]);
  808.     endpolygon();
  809.     bgnpolygon();
  810.         n3f(bn[4]);
  811.         v3f(bp[3][1]);
  812.         v3f(bp[3][3]);
  813.         v3f(bp[3][5]);
  814.         v3f(bp[3][7]);
  815.     endpolygon();
  816. }
  817.  
  818. draw_torus() {
  819.  
  820.     lmbind(MATERIAL, MAT_HOLDER_RINGS);
  821.  
  822.     bgntmesh();
  823.         n3f(tn[0][0]); v3f(tp[0][0]);
  824.         n3f(tn[1][0]); v3f(tp[1][0]);
  825.         n3f(tn[0][1]); v3f(tp[0][1]);
  826.         n3f(tn[1][1]); v3f(tp[1][1]);
  827.         n3f(tn[0][2]); v3f(tp[0][2]);
  828.         n3f(tn[1][2]); v3f(tp[1][2]);
  829.         n3f(tn[0][3]); v3f(tp[0][3]);
  830.         n3f(tn[1][3]); v3f(tp[1][3]);
  831.         n3f(tn[0][4]); v3f(tp[0][4]);
  832.         n3f(tn[1][4]); v3f(tp[1][4]);
  833.         n3f(tn[0][5]); v3f(tp[0][5]);
  834.         n3f(tn[1][5]); v3f(tp[1][5]);
  835.         n3f(tn[0][6]); v3f(tp[0][6]);
  836.         n3f(tn[1][6]); v3f(tp[1][6]);
  837.         n3f(tn[0][7]); v3f(tp[0][7]);
  838.         n3f(tn[1][7]); v3f(tp[1][7]);
  839.         n3f(tn[0][8]); v3f(tp[0][8]);
  840.         n3f(tn[1][8]); v3f(tp[1][8]);
  841.         n3f(tn[0][9]); v3f(tp[0][9]);
  842.         n3f(tn[1][9]); v3f(tp[1][9]);
  843.         n3f(tn[0][10]); v3f(tp[0][10]);
  844.         n3f(tn[1][10]); v3f(tp[1][10]);
  845.         n3f(tn[0][11]); v3f(tp[0][11]);
  846.         n3f(tn[1][11]); v3f(tp[1][11]);
  847.         n3f(tn[0][12]); v3f(tp[0][12]);
  848.         n3f(tn[1][12]); v3f(tp[1][12]);
  849.         n3f(tn[0][13]); v3f(tp[0][13]);
  850.         n3f(tn[1][13]); v3f(tp[1][13]);
  851.         n3f(tn[0][14]); v3f(tp[0][14]);
  852.         n3f(tn[1][14]); v3f(tp[1][14]);
  853.         n3f(tn[0][15]); v3f(tp[0][15]);
  854.         n3f(tn[1][15]); v3f(tp[1][15]);
  855.         n3f(tn[0][16]); v3f(tp[0][16]);
  856.         n3f(tn[1][16]); v3f(tp[1][16]);
  857.         n3f(tn[0][17]); v3f(tp[0][17]);
  858.         n3f(tn[1][17]); v3f(tp[1][17]);
  859.         n3f(tn[0][18]); v3f(tp[0][18]);
  860.         n3f(tn[1][18]); v3f(tp[1][18]);
  861.         n3f(tn[0][19]); v3f(tp[0][19]);
  862.         n3f(tn[1][19]); v3f(tp[1][19]);
  863.         n3f(tn[0][20]); v3f(tp[0][20]);
  864.         n3f(tn[1][20]); v3f(tp[1][20]);
  865.     endtmesh();
  866.     bgntmesh();
  867.         n3f(tn[1][0]); v3f(tp[1][0]);
  868.         n3f(tn[2][0]); v3f(tp[2][0]);
  869.         n3f(tn[1][1]); v3f(tp[1][1]);
  870.         n3f(tn[2][1]); v3f(tp[2][1]);
  871.         n3f(tn[1][2]); v3f(tp[1][2]);
  872.         n3f(tn[2][2]); v3f(tp[2][2]);
  873.         n3f(tn[1][3]); v3f(tp[1][3]);
  874.         n3f(tn[2][3]); v3f(tp[2][3]);
  875.         n3f(tn[1][4]); v3f(tp[1][4]);
  876.         n3f(tn[2][4]); v3f(tp[2][4]);
  877.         n3f(tn[1][5]); v3f(tp[1][5]);
  878.         n3f(tn[2][5]); v3f(tp[2][5]);
  879.         n3f(tn[1][6]); v3f(tp[1][6]);
  880.         n3f(tn[2][6]); v3f(tp[2][6]);
  881.         n3f(tn[1][7]); v3f(tp[1][7]);
  882.         n3f(tn[2][7]); v3f(tp[2][7]);
  883.         n3f(tn[1][8]); v3f(tp[1][8]);
  884.         n3f(tn[2][8]); v3f(tp[2][8]);
  885.         n3f(tn[1][9]); v3f(tp[1][9]);
  886.         n3f(tn[2][9]); v3f(tp[2][9]);
  887.         n3f(tn[1][10]); v3f(tp[1][10]);
  888.         n3f(tn[2][10]); v3f(tp[2][10]);
  889.         n3f(tn[1][11]); v3f(tp[1][11]);
  890.         n3f(tn[2][11]); v3f(tp[2][11]);
  891.         n3f(tn[1][12]); v3f(tp[1][12]);
  892.         n3f(tn[2][12]); v3f(tp[2][12]);
  893.         n3f(tn[1][13]); v3f(tp[1][13]);
  894.         n3f(tn[2][13]); v3f(tp[2][13]);
  895.         n3f(tn[1][14]); v3f(tp[1][14]);
  896.         n3f(tn[2][14]); v3f(tp[2][14]);
  897.         n3f(tn[1][15]); v3f(tp[1][15]);
  898.         n3f(tn[2][15]); v3f(tp[2][15]);
  899.         n3f(tn[1][16]); v3f(tp[1][16]);
  900.         n3f(tn[2][16]); v3f(tp[2][16]);
  901.         n3f(tn[1][17]); v3f(tp[1][17]);
  902.         n3f(tn[2][17]); v3f(tp[2][17]);
  903.         n3f(tn[1][18]); v3f(tp[1][18]);
  904.         n3f(tn[2][18]); v3f(tp[2][18]);
  905.         n3f(tn[1][19]); v3f(tp[1][19]);
  906.         n3f(tn[2][19]); v3f(tp[2][19]);
  907.         n3f(tn[1][20]); v3f(tp[1][20]);
  908.         n3f(tn[2][20]); v3f(tp[2][20]);
  909.     endtmesh();
  910.     bgntmesh();
  911.         n3f(tn[2][0]); v3f(tp[2][0]);
  912.         n3f(tn[3][0]); v3f(tp[3][0]);
  913.         n3f(tn[2][1]); v3f(tp[2][1]);
  914.         n3f(tn[3][1]); v3f(tp[3][1]);
  915.         n3f(tn[2][2]); v3f(tp[2][2]);
  916.         n3f(tn[3][2]); v3f(tp[3][2]);
  917.         n3f(tn[2][3]); v3f(tp[2][3]);
  918.         n3f(tn[3][3]); v3f(tp[3][3]);
  919.         n3f(tn[2][4]); v3f(tp[2][4]);
  920.         n3f(tn[3][4]); v3f(tp[3][4]);
  921.         n3f(tn[2][5]); v3f(tp[2][5]);
  922.         n3f(tn[3][5]); v3f(tp[3][5]);
  923.         n3f(tn[2][6]); v3f(tp[2][6]);
  924.         n3f(tn[3][6]); v3f(tp[3][6]);
  925.         n3f(tn[2][7]); v3f(tp[2][7]);
  926.         n3f(tn[3][7]); v3f(tp[3][7]);
  927.         n3f(tn[2][8]); v3f(tp[2][8]);
  928.         n3f(tn[3][8]); v3f(tp[3][8]);
  929.         n3f(tn[2][9]); v3f(tp[2][9]);
  930.         n3f(tn[3][9]); v3f(tp[3][9]);
  931.         n3f(tn[2][10]); v3f(tp[2][10]);
  932.         n3f(tn[3][10]); v3f(tp[3][10]);
  933.         n3f(tn[2][11]); v3f(tp[2][11]);
  934.         n3f(tn[3][11]); v3f(tp[3][11]);
  935.         n3f(tn[2][12]); v3f(tp[2][12]);
  936.         n3f(tn[3][12]); v3f(tp[3][12]);
  937.         n3f(tn[2][13]); v3f(tp[2][13]);
  938.         n3f(tn[3][13]); v3f(tp[3][13]);
  939.         n3f(tn[2][14]); v3f(tp[2][14]);
  940.         n3f(tn[3][14]); v3f(tp[3][14]);
  941.         n3f(tn[2][15]); v3f(tp[2][15]);
  942.         n3f(tn[3][15]); v3f(tp[3][15]);
  943.         n3f(tn[2][16]); v3f(tp[2][16]);
  944.         n3f(tn[3][16]); v3f(tp[3][16]);
  945.         n3f(tn[2][17]); v3f(tp[2][17]);
  946.         n3f(tn[3][17]); v3f(tp[3][17]);
  947.         n3f(tn[2][18]); v3f(tp[2][18]);
  948.         n3f(tn[3][18]); v3f(tp[3][18]);
  949.         n3f(tn[2][19]); v3f(tp[2][19]);
  950.         n3f(tn[3][19]); v3f(tp[3][19]);
  951.         n3f(tn[2][20]); v3f(tp[2][20]);
  952.         n3f(tn[3][20]); v3f(tp[3][20]);
  953.     endtmesh();
  954.     bgntmesh();
  955.         n3f(tn[3][0]); v3f(tp[3][0]);
  956.         n3f(tn[4][0]); v3f(tp[4][0]);
  957.         n3f(tn[3][1]); v3f(tp[3][1]);
  958.         n3f(tn[4][1]); v3f(tp[4][1]);
  959.         n3f(tn[3][2]); v3f(tp[3][2]);
  960.         n3f(tn[4][2]); v3f(tp[4][2]);
  961.         n3f(tn[3][3]); v3f(tp[3][3]);
  962.         n3f(tn[4][3]); v3f(tp[4][3]);
  963.         n3f(tn[3][4]); v3f(tp[3][4]);
  964.         n3f(tn[4][4]); v3f(tp[4][4]);
  965.         n3f(tn[3][5]); v3f(tp[3][5]);
  966.         n3f(tn[4][5]); v3f(tp[4][5]);
  967.         n3f(tn[3][6]); v3f(tp[3][6]);
  968.         n3f(tn[4][6]); v3f(tp[4][6]);
  969.         n3f(tn[3][7]); v3f(tp[3][7]);
  970.         n3f(tn[4][7]); v3f(tp[4][7]);
  971.         n3f(tn[3][8]); v3f(tp[3][8]);
  972.         n3f(tn[4][8]); v3f(tp[4][8]);
  973.         n3f(tn[3][9]); v3f(tp[3][9]);
  974.         n3f(tn[4][9]); v3f(tp[4][9]);
  975.         n3f(tn[3][10]); v3f(tp[3][10]);
  976.         n3f(tn[4][10]); v3f(tp[4][10]);
  977.         n3f(tn[3][11]); v3f(tp[3][11]);
  978.         n3f(tn[4][11]); v3f(tp[4][11]);
  979.         n3f(tn[3][12]); v3f(tp[3][12]);
  980.         n3f(tn[4][12]); v3f(tp[4][12]);
  981.         n3f(tn[3][13]); v3f(tp[3][13]);
  982.         n3f(tn[4][13]); v3f(tp[4][13]);
  983.         n3f(tn[3][14]); v3f(tp[3][14]);
  984.         n3f(tn[4][14]); v3f(tp[4][14]);
  985.         n3f(tn[3][15]); v3f(tp[3][15]);
  986.         n3f(tn[4][15]); v3f(tp[4][15]);
  987.         n3f(tn[3][16]); v3f(tp[3][16]);
  988.         n3f(tn[4][16]); v3f(tp[4][16]);
  989.         n3f(tn[3][17]); v3f(tp[3][17]);
  990.         n3f(tn[4][17]); v3f(tp[4][17]);
  991.         n3f(tn[3][18]); v3f(tp[3][18]);
  992.         n3f(tn[4][18]); v3f(tp[4][18]);
  993.         n3f(tn[3][19]); v3f(tp[3][19]);
  994.         n3f(tn[4][19]); v3f(tp[4][19]);
  995.         n3f(tn[3][20]); v3f(tp[3][20]);
  996.         n3f(tn[4][20]); v3f(tp[4][20]);
  997.     endtmesh();
  998.     bgntmesh();
  999.         n3f(tn[4][0]); v3f(tp[4][0]);
  1000.         n3f(tn[5][0]); v3f(tp[5][0]);
  1001.         n3f(tn[4][1]); v3f(tp[4][1]);
  1002.         n3f(tn[5][1]); v3f(tp[5][1]);
  1003.         n3f(tn[4][2]); v3f(tp[4][2]);
  1004.         n3f(tn[5][2]); v3f(tp[5][2]);
  1005.         n3f(tn[4][3]); v3f(tp[4][3]);
  1006.         n3f(tn[5][3]); v3f(tp[5][3]);
  1007.         n3f(tn[4][4]); v3f(tp[4][4]);
  1008.         n3f(tn[5][4]); v3f(tp[5][4]);
  1009.         n3f(tn[4][5]); v3f(tp[4][5]);
  1010.         n3f(tn[5][5]); v3f(tp[5][5]);
  1011.         n3f(tn[4][6]); v3f(tp[4][6]);
  1012.         n3f(tn[5][6]); v3f(tp[5][6]);
  1013.         n3f(tn[4][7]); v3f(tp[4][7]);
  1014.         n3f(tn[5][7]); v3f(tp[5][7]);
  1015.         n3f(tn[4][8]); v3f(tp[4][8]);
  1016.         n3f(tn[5][8]); v3f(tp[5][8]);
  1017.         n3f(tn[4][9]); v3f(tp[4][9]);
  1018.         n3f(tn[5][9]); v3f(tp[5][9]);
  1019.         n3f(tn[4][10]); v3f(tp[4][10]);
  1020.         n3f(tn[5][10]); v3f(tp[5][10]);
  1021.         n3f(tn[4][11]); v3f(tp[4][11]);
  1022.         n3f(tn[5][11]); v3f(tp[5][11]);
  1023.         n3f(tn[4][12]); v3f(tp[4][12]);
  1024.         n3f(tn[5][12]); v3f(tp[5][12]);
  1025.         n3f(tn[4][13]); v3f(tp[4][13]);
  1026.         n3f(tn[5][13]); v3f(tp[5][13]);
  1027.         n3f(tn[4][14]); v3f(tp[4][14]);
  1028.         n3f(tn[5][14]); v3f(tp[5][14]);
  1029.         n3f(tn[4][15]); v3f(tp[4][15]);
  1030.         n3f(tn[5][15]); v3f(tp[5][15]);
  1031.         n3f(tn[4][16]); v3f(tp[4][16]);
  1032.         n3f(tn[5][16]); v3f(tp[5][16]);
  1033.         n3f(tn[4][17]); v3f(tp[4][17]);
  1034.         n3f(tn[5][17]); v3f(tp[5][17]);
  1035.         n3f(tn[4][18]); v3f(tp[4][18]);
  1036.         n3f(tn[5][18]); v3f(tp[5][18]);
  1037.         n3f(tn[4][19]); v3f(tp[4][19]);
  1038.         n3f(tn[5][19]); v3f(tp[5][19]);
  1039.         n3f(tn[4][20]); v3f(tp[4][20]);
  1040.         n3f(tn[5][20]); v3f(tp[5][20]);
  1041.     endtmesh();
  1042.     bgntmesh();
  1043.         n3f(tn[5][0]); v3f(tp[5][0]);
  1044.         n3f(tn[6][0]); v3f(tp[6][0]);
  1045.         n3f(tn[5][1]); v3f(tp[5][1]);
  1046.         n3f(tn[6][1]); v3f(tp[6][1]);
  1047.         n3f(tn[5][2]); v3f(tp[5][2]);
  1048.         n3f(tn[6][2]); v3f(tp[6][2]);
  1049.         n3f(tn[5][3]); v3f(tp[5][3]);
  1050.         n3f(tn[6][3]); v3f(tp[6][3]);
  1051.         n3f(tn[5][4]); v3f(tp[5][4]);
  1052.         n3f(tn[6][4]); v3f(tp[6][4]);
  1053.         n3f(tn[5][5]); v3f(tp[5][5]);
  1054.         n3f(tn[6][5]); v3f(tp[6][5]);
  1055.         n3f(tn[5][6]); v3f(tp[5][6]);
  1056.         n3f(tn[6][6]); v3f(tp[6][6]);
  1057.         n3f(tn[5][7]); v3f(tp[5][7]);
  1058.         n3f(tn[6][7]); v3f(tp[6][7]);
  1059.         n3f(tn[5][8]); v3f(tp[5][8]);
  1060.         n3f(tn[6][8]); v3f(tp[6][8]);
  1061.         n3f(tn[5][9]); v3f(tp[5][9]);
  1062.         n3f(tn[6][9]); v3f(tp[6][9]);
  1063.         n3f(tn[5][10]); v3f(tp[5][10]);
  1064.         n3f(tn[6][10]); v3f(tp[6][10]);
  1065.         n3f(tn[5][11]); v3f(tp[5][11]);
  1066.         n3f(tn[6][11]); v3f(tp[6][11]);
  1067.         n3f(tn[5][12]); v3f(tp[5][12]);
  1068.         n3f(tn[6][12]); v3f(tp[6][12]);
  1069.         n3f(tn[5][13]); v3f(tp[5][13]);
  1070.         n3f(tn[6][13]); v3f(tp[6][13]);
  1071.         n3f(tn[5][14]); v3f(tp[5][14]);
  1072.         n3f(tn[6][14]); v3f(tp[6][14]);
  1073.         n3f(tn[5][15]); v3f(tp[5][15]);
  1074.         n3f(tn[6][15]); v3f(tp[6][15]);
  1075.         n3f(tn[5][16]); v3f(tp[5][16]);
  1076.         n3f(tn[6][16]); v3f(tp[6][16]);
  1077.         n3f(tn[5][17]); v3f(tp[5][17]);
  1078.         n3f(tn[6][17]); v3f(tp[6][17]);
  1079.         n3f(tn[5][18]); v3f(tp[5][18]);
  1080.         n3f(tn[6][18]); v3f(tp[6][18]);
  1081.         n3f(tn[5][19]); v3f(tp[5][19]);
  1082.         n3f(tn[6][19]); v3f(tp[6][19]);
  1083.         n3f(tn[5][20]); v3f(tp[5][20]);
  1084.         n3f(tn[6][20]); v3f(tp[6][20]);
  1085.     endtmesh();
  1086.     bgntmesh();
  1087.         n3f(tn[6][0]); v3f(tp[6][0]);
  1088.         n3f(tn[7][0]); v3f(tp[7][0]);
  1089.         n3f(tn[6][1]); v3f(tp[6][1]);
  1090.         n3f(tn[7][1]); v3f(tp[7][1]);
  1091.         n3f(tn[6][2]); v3f(tp[6][2]);
  1092.         n3f(tn[7][2]); v3f(tp[7][2]);
  1093.         n3f(tn[6][3]); v3f(tp[6][3]);
  1094.         n3f(tn[7][3]); v3f(tp[7][3]);
  1095.         n3f(tn[6][4]); v3f(tp[6][4]);
  1096.         n3f(tn[7][4]); v3f(tp[7][4]);
  1097.         n3f(tn[6][5]); v3f(tp[6][5]);
  1098.         n3f(tn[7][5]); v3f(tp[7][5]);
  1099.         n3f(tn[6][6]); v3f(tp[6][6]);
  1100.         n3f(tn[7][6]); v3f(tp[7][6]);
  1101.         n3f(tn[6][7]); v3f(tp[6][7]);
  1102.         n3f(tn[7][7]); v3f(tp[7][7]);
  1103.         n3f(tn[6][8]); v3f(tp[6][8]);
  1104.         n3f(tn[7][8]); v3f(tp[7][8]);
  1105.         n3f(tn[6][9]); v3f(tp[6][9]);
  1106.         n3f(tn[7][9]); v3f(tp[7][9]);
  1107.         n3f(tn[6][10]); v3f(tp[6][10]);
  1108.         n3f(tn[7][10]); v3f(tp[7][10]);
  1109.         n3f(tn[6][11]); v3f(tp[6][11]);
  1110.         n3f(tn[7][11]); v3f(tp[7][11]);
  1111.         n3f(tn[6][12]); v3f(tp[6][12]);
  1112.         n3f(tn[7][12]); v3f(tp[7][12]);
  1113.         n3f(tn[6][13]); v3f(tp[6][13]);
  1114.         n3f(tn[7][13]); v3f(tp[7][13]);
  1115.         n3f(tn[6][14]); v3f(tp[6][14]);
  1116.         n3f(tn[7][14]); v3f(tp[7][14]);
  1117.         n3f(tn[6][15]); v3f(tp[6][15]);
  1118.         n3f(tn[7][15]); v3f(tp[7][15]);
  1119.         n3f(tn[6][16]); v3f(tp[6][16]);
  1120.         n3f(tn[7][16]); v3f(tp[7][16]);
  1121.         n3f(tn[6][17]); v3f(tp[6][17]);
  1122.         n3f(tn[7][17]); v3f(tp[7][17]);
  1123.         n3f(tn[6][18]); v3f(tp[6][18]);
  1124.         n3f(tn[7][18]); v3f(tp[7][18]);
  1125.         n3f(tn[6][19]); v3f(tp[6][19]);
  1126.         n3f(tn[7][19]); v3f(tp[7][19]);
  1127.         n3f(tn[6][20]); v3f(tp[6][20]);
  1128.         n3f(tn[7][20]); v3f(tp[7][20]);
  1129.     endtmesh();
  1130.     bgntmesh();
  1131.         n3f(tn[7][0]); v3f(tp[7][0]);
  1132.         n3f(tn[8][0]); v3f(tp[8][0]);
  1133.         n3f(tn[7][1]); v3f(tp[7][1]);
  1134.         n3f(tn[8][1]); v3f(tp[8][1]);
  1135.         n3f(tn[7][2]); v3f(tp[7][2]);
  1136.         n3f(tn[8][2]); v3f(tp[8][2]);
  1137.         n3f(tn[7][3]); v3f(tp[7][3]);
  1138.         n3f(tn[8][3]); v3f(tp[8][3]);
  1139.         n3f(tn[7][4]); v3f(tp[7][4]);
  1140.         n3f(tn[8][4]); v3f(tp[8][4]);
  1141.         n3f(tn[7][5]); v3f(tp[7][5]);
  1142.         n3f(tn[8][5]); v3f(tp[8][5]);
  1143.         n3f(tn[7][6]); v3f(tp[7][6]);
  1144.         n3f(tn[8][6]); v3f(tp[8][6]);
  1145.         n3f(tn[7][7]); v3f(tp[7][7]);
  1146.         n3f(tn[8][7]); v3f(tp[8][7]);
  1147.         n3f(tn[7][8]); v3f(tp[7][8]);
  1148.         n3f(tn[8][8]); v3f(tp[8][8]);
  1149.         n3f(tn[7][9]); v3f(tp[7][9]);
  1150.         n3f(tn[8][9]); v3f(tp[8][9]);
  1151.         n3f(tn[7][10]); v3f(tp[7][10]);
  1152.         n3f(tn[8][10]); v3f(tp[8][10]);
  1153.         n3f(tn[7][11]); v3f(tp[7][11]);
  1154.         n3f(tn[8][11]); v3f(tp[8][11]);
  1155.         n3f(tn[7][12]); v3f(tp[7][12]);
  1156.         n3f(tn[8][12]); v3f(tp[8][12]);
  1157.         n3f(tn[7][13]); v3f(tp[7][13]);
  1158.         n3f(tn[8][13]); v3f(tp[8][13]);
  1159.         n3f(tn[7][14]); v3f(tp[7][14]);
  1160.         n3f(tn[8][14]); v3f(tp[8][14]);
  1161.         n3f(tn[7][15]); v3f(tp[7][15]);
  1162.         n3f(tn[8][15]); v3f(tp[8][15]);
  1163.         n3f(tn[7][16]); v3f(tp[7][16]);
  1164.         n3f(tn[8][16]); v3f(tp[8][16]);
  1165.         n3f(tn[7][17]); v3f(tp[7][17]);
  1166.         n3f(tn[8][17]); v3f(tp[8][17]);
  1167.         n3f(tn[7][18]); v3f(tp[7][18]);
  1168.         n3f(tn[8][18]); v3f(tp[8][18]);
  1169.         n3f(tn[7][19]); v3f(tp[7][19]);
  1170.         n3f(tn[8][19]); v3f(tp[8][19]);
  1171.         n3f(tn[7][20]); v3f(tp[7][20]);
  1172.         n3f(tn[8][20]); v3f(tp[8][20]);
  1173.     endtmesh();
  1174.     bgntmesh();
  1175.         n3f(tn[8][0]); v3f(tp[8][0]);
  1176.         n3f(tn[9][0]); v3f(tp[9][0]);
  1177.         n3f(tn[8][1]); v3f(tp[8][1]);
  1178.         n3f(tn[9][1]); v3f(tp[9][1]);
  1179.         n3f(tn[8][2]); v3f(tp[8][2]);
  1180.         n3f(tn[9][2]); v3f(tp[9][2]);
  1181.         n3f(tn[8][3]); v3f(tp[8][3]);
  1182.         n3f(tn[9][3]); v3f(tp[9][3]);
  1183.         n3f(tn[8][4]); v3f(tp[8][4]);
  1184.         n3f(tn[9][4]); v3f(tp[9][4]);
  1185.         n3f(tn[8][5]); v3f(tp[8][5]);
  1186.         n3f(tn[9][5]); v3f(tp[9][5]);
  1187.         n3f(tn[8][6]); v3f(tp[8][6]);
  1188.         n3f(tn[9][6]); v3f(tp[9][6]);
  1189.         n3f(tn[8][7]); v3f(tp[8][7]);
  1190.         n3f(tn[9][7]); v3f(tp[9][7]);
  1191.         n3f(tn[8][8]); v3f(tp[8][8]);
  1192.         n3f(tn[9][8]); v3f(tp[9][8]);
  1193.         n3f(tn[8][9]); v3f(tp[8][9]);
  1194.         n3f(tn[9][9]); v3f(tp[9][9]);
  1195.         n3f(tn[8][10]); v3f(tp[8][10]);
  1196.         n3f(tn[9][10]); v3f(tp[9][10]);
  1197.         n3f(tn[8][11]); v3f(tp[8][11]);
  1198.         n3f(tn[9][11]); v3f(tp[9][11]);
  1199.         n3f(tn[8][12]); v3f(tp[8][12]);
  1200.         n3f(tn[9][12]); v3f(tp[9][12]);
  1201.         n3f(tn[8][13]); v3f(tp[8][13]);
  1202.         n3f(tn[9][13]); v3f(tp[9][13]);
  1203.         n3f(tn[8][14]); v3f(tp[8][14]);
  1204.         n3f(tn[9][14]); v3f(tp[9][14]);
  1205.         n3f(tn[8][15]); v3f(tp[8][15]);
  1206.         n3f(tn[9][15]); v3f(tp[9][15]);
  1207.         n3f(tn[8][16]); v3f(tp[8][16]);
  1208.         n3f(tn[9][16]); v3f(tp[9][16]);
  1209.         n3f(tn[8][17]); v3f(tp[8][17]);
  1210.         n3f(tn[9][17]); v3f(tp[9][17]);
  1211.         n3f(tn[8][18]); v3f(tp[8][18]);
  1212.         n3f(tn[9][18]); v3f(tp[9][18]);
  1213.         n3f(tn[8][19]); v3f(tp[8][19]);
  1214.         n3f(tn[9][19]); v3f(tp[9][19]);
  1215.         n3f(tn[8][20]); v3f(tp[8][20]);
  1216.         n3f(tn[9][20]); v3f(tp[9][20]);
  1217.     endtmesh();
  1218.     bgntmesh();
  1219.         n3f(tn[9][0]); v3f(tp[9][0]);
  1220.         n3f(tn[10][0]); v3f(tp[10][0]);
  1221.         n3f(tn[9][1]); v3f(tp[9][1]);
  1222.         n3f(tn[10][1]); v3f(tp[10][1]);
  1223.         n3f(tn[9][2]); v3f(tp[9][2]);
  1224.         n3f(tn[10][2]); v3f(tp[10][2]);
  1225.         n3f(tn[9][3]); v3f(tp[9][3]);
  1226.         n3f(tn[10][3]); v3f(tp[10][3]);
  1227.         n3f(tn[9][4]); v3f(tp[9][4]);
  1228.         n3f(tn[10][4]); v3f(tp[10][4]);
  1229.         n3f(tn[9][5]); v3f(tp[9][5]);
  1230.         n3f(tn[10][5]); v3f(tp[10][5]);
  1231.         n3f(tn[9][6]); v3f(tp[9][6]);
  1232.         n3f(tn[10][6]); v3f(tp[10][6]);
  1233.         n3f(tn[9][7]); v3f(tp[9][7]);
  1234.         n3f(tn[10][7]); v3f(tp[10][7]);
  1235.         n3f(tn[9][8]); v3f(tp[9][8]);
  1236.         n3f(tn[10][8]); v3f(tp[10][8]);
  1237.         n3f(tn[9][9]); v3f(tp[9][9]);
  1238.         n3f(tn[10][9]); v3f(tp[10][9]);
  1239.         n3f(tn[9][10]); v3f(tp[9][10]);
  1240.         n3f(tn[10][10]); v3f(tp[10][10]);
  1241.         n3f(tn[9][11]); v3f(tp[9][11]);
  1242.         n3f(tn[10][11]); v3f(tp[10][11]);
  1243.         n3f(tn[9][12]); v3f(tp[9][12]);
  1244.         n3f(tn[10][12]); v3f(tp[10][12]);
  1245.         n3f(tn[9][13]); v3f(tp[9][13]);
  1246.         n3f(tn[10][13]); v3f(tp[10][13]);
  1247.         n3f(tn[9][14]); v3f(tp[9][14]);
  1248.         n3f(tn[10][14]); v3f(tp[10][14]);
  1249.         n3f(tn[9][15]); v3f(tp[9][15]);
  1250.         n3f(tn[10][15]); v3f(tp[10][15]);
  1251.         n3f(tn[9][16]); v3f(tp[9][16]);
  1252.         n3f(tn[10][16]); v3f(tp[10][16]);
  1253.         n3f(tn[9][17]); v3f(tp[9][17]);
  1254.         n3f(tn[10][17]); v3f(tp[10][17]);
  1255.         n3f(tn[9][18]); v3f(tp[9][18]);
  1256.         n3f(tn[10][18]); v3f(tp[10][18]);
  1257.         n3f(tn[9][19]); v3f(tp[9][19]);
  1258.         n3f(tn[10][19]); v3f(tp[10][19]);
  1259.         n3f(tn[9][20]); v3f(tp[9][20]);
  1260.         n3f(tn[10][20]); v3f(tp[10][20]);
  1261.     endtmesh();
  1262.     bgntmesh();
  1263.         n3f(tn[10][0]); v3f(tp[10][0]);
  1264.         n3f(tn[11][0]); v3f(tp[11][0]);
  1265.         n3f(tn[10][1]); v3f(tp[10][1]);
  1266.         n3f(tn[11][1]); v3f(tp[11][1]);
  1267.         n3f(tn[10][2]); v3f(tp[10][2]);
  1268.         n3f(tn[11][2]); v3f(tp[11][2]);
  1269.         n3f(tn[10][3]); v3f(tp[10][3]);
  1270.         n3f(tn[11][3]); v3f(tp[11][3]);
  1271.         n3f(tn[10][4]); v3f(tp[10][4]);
  1272.         n3f(tn[11][4]); v3f(tp[11][4]);
  1273.         n3f(tn[10][5]); v3f(tp[10][5]);
  1274.         n3f(tn[11][5]); v3f(tp[11][5]);
  1275.         n3f(tn[10][6]); v3f(tp[10][6]);
  1276.         n3f(tn[11][6]); v3f(tp[11][6]);
  1277.         n3f(tn[10][7]); v3f(tp[10][7]);
  1278.         n3f(tn[11][7]); v3f(tp[11][7]);
  1279.         n3f(tn[10][8]); v3f(tp[10][8]);
  1280.         n3f(tn[11][8]); v3f(tp[11][8]);
  1281.         n3f(tn[10][9]); v3f(tp[10][9]);
  1282.         n3f(tn[11][9]); v3f(tp[11][9]);
  1283.         n3f(tn[10][10]); v3f(tp[10][10]);
  1284.         n3f(tn[11][10]); v3f(tp[11][10]);
  1285.         n3f(tn[10][11]); v3f(tp[10][11]);
  1286.         n3f(tn[11][11]); v3f(tp[11][11]);
  1287.         n3f(tn[10][12]); v3f(tp[10][12]);
  1288.         n3f(tn[11][12]); v3f(tp[11][12]);
  1289.         n3f(tn[10][13]); v3f(tp[10][13]);
  1290.         n3f(tn[11][13]); v3f(tp[11][13]);
  1291.         n3f(tn[10][14]); v3f(tp[10][14]);
  1292.         n3f(tn[11][14]); v3f(tp[11][14]);
  1293.         n3f(tn[10][15]); v3f(tp[10][15]);
  1294.         n3f(tn[11][15]); v3f(tp[11][15]);
  1295.         n3f(tn[10][16]); v3f(tp[10][16]);
  1296.         n3f(tn[11][16]); v3f(tp[11][16]);
  1297.         n3f(tn[10][17]); v3f(tp[10][17]);
  1298.         n3f(tn[11][17]); v3f(tp[11][17]);
  1299.         n3f(tn[10][18]); v3f(tp[10][18]);
  1300.         n3f(tn[11][18]); v3f(tp[11][18]);
  1301.         n3f(tn[10][19]); v3f(tp[10][19]);
  1302.         n3f(tn[11][19]); v3f(tp[11][19]);
  1303.         n3f(tn[10][20]); v3f(tp[10][20]);
  1304.         n3f(tn[11][20]); v3f(tp[11][20]);
  1305.     endtmesh();
  1306. }
  1307.  
  1308. draw_holder() {
  1309.  
  1310.     lmbind(MATERIAL, MAT_HOLDER_RINGS);
  1311.  
  1312.     pushmatrix();
  1313.     draw_base();
  1314.     translate(0.0, 0.0, 20.000000);
  1315.     draw_torus();
  1316.     translate(0.0, 0.0, 5.000000);
  1317.     draw_torus();
  1318.     translate(0.0, 0.0, 5.000000);
  1319.     draw_torus();
  1320.     popmatrix();
  1321. }
  1322.  
  1323.